package com.boot2.core.utils;//package com.boot2.arkiot.core.utils;
//
//import java.io.UnsupportedEncodingException;
//import java.nio.ByteBuffer;
//import java.nio.CharBuffer;
//import java.nio.charset.Charset;
//import java.nio.charset.CharsetDecoder;
//
//public class ByteUtil {
//
//    /**
//     * 短整型转字节数组
//     *
//     * @param data
//     * @return
//     */
//    public static byte[] getBytes(short data) {
//        byte[] bytes = new byte[2];
//        bytes[0] = (byte) (data & 0xff);
//        bytes[1] = (byte) ((data & 0xff00) >> 8);
//        return bytes;
//    }
//
//    /**
//     * char字符转字节数组
//     *
//     * @param data
//     * @return
//     */
//    public static byte[] getBytes(char data) {
//        byte[] bytes = new byte[2];
//        bytes[0] = (byte) (data);
//        bytes[1] = (byte) (data >> 8);
//        return bytes;
//    }
//
//    /**
//     * 把字符转为int
//     *
//     * @param c
//     * @return
//     */
//    public static int getByte(char c) {
//        String string = "0123456789ABCDEF";
//        for (int i = 0; i < string.length(); i++) {
//            if (string.charAt(i) == c) {
//                return i;
//            }
//        }
//        return -1;
//    }
//
//    /**
//     * 整型转字节数组(4字节小端)
//     *
//     * @param data
//     * @return
//     */
//    public static byte[] getBytes(int data) {
//        byte[] bytes = new byte[4];
//        bytes[0] = (byte) (data & 0xff);
//        bytes[1] = (byte) ((data & 0xff00) >> 8);
//        bytes[2] = (byte) ((data & 0xff0000) >> 16);
//        bytes[3] = (byte) ((data & 0xff000000) >> 24);
//        return bytes;
//    }
//
//    /**
//     * 整型转字节数组(4字节大端)
//     *
//     * @param data
//     * @return
//     */
//    public static byte[] getBytesBig(int data) {
//        byte[] bytes = new byte[4];
//        bytes[0] = (byte) ((data & 0xff000000) >> 24);
//        bytes[1] = (byte) ((data & 0xff0000) >> 16);
//        bytes[2] = (byte) ((data & 0xff00) >> 8);
//        bytes[3] = (byte) (data & 0xff);
//        return bytes;
//    }
//
//    /**
//     * 长整型转为字节数组
//     *
//     * @param data
//     * @return
//     */
//    public static byte[] getBytes(long data) {
//        byte[] bytes = new byte[8];
//        for (int i = 8; i > 0; i--) {
//            bytes[8 - i] = (byte) ((data >> ((8 - i) * 8)) & 0xff);
//        }
//        /***
//         bytes[0] = (byte) (data & 0xff);
//         bytes[1] = (byte) ((data >> 8) & 0xff);
//         bytes[2] = (byte) ((data >> 16) & 0xff);
//         bytes[3] = (byte) ((data >> 24) & 0xff);
//         bytes[4] = (byte) ((data >> 32) & 0xff);
//         bytes[5] = (byte) ((data >> 40) & 0xff);
//         bytes[6] = (byte) ((data >> 48) & 0xff);
//         bytes[7] = (byte) ((data >> 56) & 0xff);
//         ***/
//        return bytes;
//    }
//
//    /**
//     * 单精度（符点数）转为字节数组(小端)
//     *
//     * @param data
//     * @return
//     */
//    public static byte[] getBytes(float data) {
//        int intBits = Float.floatToIntBits(data);
//        return getBytes(intBits);
//    }
//    
//    public static String byteBufferToString(ByteBuffer buffer) {
//    	CharBuffer charBuffer = null;
//    	try {
//    	Charset charset = Charset.forName("UTF-8");
//    	CharsetDecoder decoder = charset.newDecoder();
//    	charBuffer = decoder.decode(buffer);
//    	buffer.flip();
//    	return charBuffer.toString();
//    	} catch (Exception ex) {
//    	ex.printStackTrace();
//    	return null;
//    	}
//    	}
//
//    /**
//     * 符点数转字节数组
//     *
//     * @param data
//     * @param byteOrder 大小端类型,默认小端
//     * @return
//     */
//    public static byte[] getBytes(float data, ByteOrder byteOrder) {
//        int intBits = Float.floatToIntBits(data);
//        if (byteOrder == ByteOrder.BIG_ENDIAN) {
//            return getBytesBig(intBits);
//        } else {
//            return getBytes(intBits);
//        }
//    }
//
//    /**
//     * 双精度转为字节数组
//     *
//     * @param data
//     * @return
//     */
//    public static byte[] getBytes(double data) {
//        long intBits = Double.doubleToLongBits(data);
//        return getBytes(intBits);
//    }
//
//    /**
//     * 字符串转为字节数组
//     *
//     * @param data
//     * @param charsetName 编码如utf-8
//     * @return
//     */
//    public static byte[] getBytes(String data, String charsetName) {
//        Charset charset = Charset.forName(charsetName);
//        return data.getBytes(charset);
//    }
//
//    /**
//     * 字符串转为字节数组
//     *
//     * @param data
//     * @return
//     */
//    public static byte[] getBytes(String data) {
//        return getBytes(data, "utf-8");
//    }
//
//    /**
//     * 字节数组转为短整型
//     *
//     * @param bytes
//     * @return
//     */
//    public static short getShort(byte[] bytes) {
//        return (short) ((0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)));
//    }
//
//    /**
//     * 字节数组转为字符
//     *
//     * @param bytes
//     * @return
//     */
//    public static char getChar(byte[] bytes) {
//        return (char) ((0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)));
//    }
//
//    /**
//     * 字节数组转为整型
//     *
//     * @param bytes
//     * @return
//     */
//    public static int getInt(byte[] bytes) {
//        return (0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)) | (0xff0000 & (bytes[2] << 16)) | (0xff000000 & (bytes[3] << 24));
//    }
//
//    /**
//     * 字节数组转为长整型
//     *
//     * @param bytes
//     * @return
//     */
//    public static long getLong(byte[] bytes) {
//        return (0xffL & (long) bytes[0]) | (0xff00L & ((long) bytes[1] << 8)) | (0xff0000L & ((long) bytes[2] << 16)) | (0xff000000L & ((long) bytes[3] << 24))
//                | (0xff00000000L & ((long) bytes[4] << 32)) | (0xff0000000000L & ((long) bytes[5] << 40)) | (0xff000000000000L & ((long) bytes[6] << 48)) | (0xff00000000000000L & ((long) bytes[7] << 56));
//    }
//
//    /**
//     * 字节数组转为单精度（符点数） 小端
//     *
//     * @param bytes
//     * @return
//     */
//    public static float getFloat(byte[] bytes) {
//        return Float.intBitsToFloat(getInt(bytes));
//    }
//
//    /**
//     * 字节数组转为双精度
//     *
//     * @param bytes
//     * @return
//     */
//    public static double getDouble(byte[] bytes) {
//        long l = getLong(bytes);
//        System.out.println(l);
//        return Double.longBitsToDouble(l);
//    }
//
//    /**
//     * 字节数组转为字符串
//     *
//     * @param bytes
//     * @param charsetName
//     * @return
//     */
//    public static String getString(byte[] bytes, String charsetName) {
//        return new String(bytes, Charset.forName(charsetName));
//    }
//
//    /**
//     * 字节数组转为字符串
//     *
//     * @param bytes
//     * @return
//     */
//    public static String getString(byte[] bytes) {
//        return getString(bytes, "utf-8");
//    }
//
//    /**
//     * 高低位反转
//     *
//     * @param s
//     * @return
//     */
//    public static String reversion(String s) {
//        int len = s.length();
//        char[] chars = s.toCharArray();
//        StringBuffer sb = new StringBuffer(8);
//        int i = len - 1;
//        while (i >= 0) {
//            sb.append(chars[i - 1]);
//            sb.append(chars[i]);
//            i -= 2;
//        }
//        return sb.toString();
//    }
//
//    /**
//     * 字符数组转为16进制字符串
//     */
//    public static String hexBytes2HexString(byte[] src) {
//        StringBuilder stringBuilder = new StringBuilder("");
//        if (src == null || src.length <= 0) {
//            return null;
//        }
//        for (int i = 0; i < src.length; i++) {
//            int v = src[i] & 0xFF;
//            String hv = Integer.toHexString(v);
//            if (hv.length() < 2) {
//                stringBuilder.append(0);
//            }
//            stringBuilder.append(hv);
//        }
//        return stringBuilder.toString();
//    }
//
//    /**
//     * 16进制字符串转为字节数组
//     */
//    public static byte[] hexString2Bytes(String hexString) {
//        if (hexString == null || hexString.equals("")) {
//            return null;
//        }
//        hexString = hexString.toUpperCase();
//        int length = hexString.length() / 2;
//        char[] hexChars = hexString.toCharArray();
//        byte[] d = new byte[length];
//        for (int i = 0; i < length; i++) {
//            int pos = i * 2;
//            d[i] = (byte) (getByte(hexChars[pos]) << 4 | getByte(hexChars[pos + 1]));
//        }
//        return d;
//    }
//
//    public static void floatAndByte() {
//        float f = 10.56f;
//        byte[] fb = getBytes(f);
//        ByteBuffer bb1 = ByteBuffer.wrap(fb);
//        for (byte bt : bb1.array()) {
//            System.out.printf("%x", bt);
//        }
//        float ft = getFloat(fb);
//        System.out.println();
//        System.out.println(ft);
//        String hex = "4128f5c3";
//        int i = Integer.parseInt(hex, 16);
//        System.out.println(Float.intBitsToFloat(i));
//        hex = "c3f52841";
//        hex = reversion(hex);
//        i = Integer.parseInt(hex, 16);
//        System.out.println(Float.intBitsToFloat(i));
//        System.out.println(Float.intBitsToFloat(i));
//    }
//
//    public void jugelizi() throws UnsupportedEncodingException {
//        String s = Charset.defaultCharset().displayName();
//        System.out.println("默认编码：" + s);
//        String s1 = "我喜欢你,My Love";
//        ByteBuffer bb1 = ByteBuffer.wrap(s1.getBytes("UTF-8"));
//        for (byte bt : bb1.array()) {
//            System.out.printf("%x", bt);
//        }
//        System.out.println();
//        String s2 = Charset.forName("utf-8").decode(bb1).toString();
//        System.out.println("1/" + s2);
//        //char[]用法
//        char[] chArray = {'I', 'L', 'o', 'v', 'e', '你'};
//        //CharBuffer用法
//        CharBuffer cb = CharBuffer.wrap(chArray);
//        //重新定位指针
//        cb.flip();
//        s2 = new String(chArray);
//        System.out.println("2/" + s2);
//        //ByteBuffer用法
//        ByteBuffer bb2 = Charset.forName("utf-8").encode(cb);
//        s2 = Charset.forName("utf-8").decode(bb2).toString();
//        System.out.println("3/" + s2);
//        // 利用Charset编码为指定字符集
//        ByteBuffer bb3 = Charset.forName("utf-8").encode(s1);
//        byte[] b = bb3.array();
//        // 利用Charset按指定字符集解码为字符串
//        ByteBuffer bb4 = ByteBuffer.wrap(b);
//        s2 = Charset.forName("utf-8").decode(bb4).toString();
//        System.out.println("4/" + s2);
//    }
//
//    public static void main(String[] args) {
//        short s = 32767;
//        int i = 1024;
//        long l = 1024;
//        char c = 'a';
//        float f = 10.22f;
//        double d = 10.22;
//        String string = "字节数组与各类型互转的实例";
//        System.out.println(s);
//        System.out.println(i);
//        System.out.println(l);
//        System.out.println(c);
//        System.out.println(f);
//        System.out.println(d);
//        System.out.println(string);
//
//        System.out.println("@#$%^&");
//
//        System.out.println(getShort(getBytes(s)));
//        System.out.println(getInt(getBytes(i)));
//        System.out.println(getLong(getBytes(l)));
//        System.out.println(getChar(getBytes(c)));
//        System.out.println(getFloat(getBytes(f)));
//        System.out.println(getDouble(getBytes(d)));
//        System.out.println(getString(getBytes(string)));
//        
//        floatAndByte();
//    }
//
//    public enum ByteOrder {
//        BIG_ENDIAN, LITTLE_ENDIAN
//    }
//}